<body>
    <script>
        // indexOf
        // 功能：根据数据查索引
    // 参数：要查询的数据
    // 返回值：查到的索引，查询不到为-1
    // 是否改变原数组：否
        var arr=[1,2,3,4,5,6,7,2,2,7]
        console.log(arr)
        // var arr1=arr.indexOf(1,0)
        // var arr1=arr.indexOf(7,8)
        // console.log(arr1)



        // forEach
        // 功能：遍历数组
        // 参数：回调函数，回调函数又有三个形参：1表示遍历到的数据，2表示对应的索引，3表示数组自身
        // 返回值：undefined
        // 是否改变原数组：看回调函数内部的操作（根据数组内的数据类型决定）
        // var res= arr.forEach(function(a,b,c){
        //     console.log(a,b,c)
        // })
        // console.log(res)
        //  var ress = arr.forEach(function(a,b,c){
        //     console.log(a,b,c)
        //  })



        // Map
      //  功能：同forEach
    // 参数：同forEach
    // 返回值：是一个新数组，数组内，保存了回调函数每次的返回值
    // 是否改变原数组：同forEach
        // var arr=[1,2,3,4,5,6,7,2,2,7]
        //   var res1 = arr.map(function(a,b,c){
        //     console.log(a,b,c)
        //     return a*=2
        //   })
        //   console.log(res1)


          //filter
          // 功能：同forEach
            // 参数：同forEach
            // 返回值：是一个新数组，数组内，保存了当回调函数返回true时遍历到的数据的数据
            // 是否改变原数组：同forEach
        //     var arr=[1,2,3,4,5,6,7,2,2,7]
        //   var res2 = arr.filter(function(a,b,c){
        //     // console.log(a,b,c)
        //     // return true
        //     return a<5
        //   })
        //   console.log(res2)


          //some
        // 功能：同forEach + filter，规则：只需要数组中有一个数据符合要求。
      // 参数：同forEach
      // 返回值：布尔值，当回调函数中有一个返回true时，结果为true，同时停止遍历；全部为false，才为false（遍历所有）
      // 是否改变原数组：同forEach

        //   var arr=[1,2,3,4,5,6,7,2,2,7]
        //   var res2 = arr.some(function(a,b,c){
        //     // console.log(a,b,c)
        //     // return true
        //     return  a>5 
        //   })
        //   console.log(res2)


        //   every
        // 功能：同forEach + filter，规则：需要数组中所有数据都符合要求。
        // 参数：同forEach
        // 返回值：布尔值，当回调函数中有一个返回false时，结果为false，同时停止遍历；全部为true，才为true（遍历所有）
        // 是否改变原数组：同forEach
        // var arr=[1,2,3,4,5,6,7,2,2,7]
        //   var res2 = arr.every(function(a,b,c){
        //     // console.log(a,b,c)
        //     // return true
        //     return  a %2===0
        //   })
        //   console.log(res2)

        //   reduce
        //功能：归并
    // 参数：1回调函数，2初始值，可选
        // 回调函数又有四个参数：
         // 1如果reduce有第二个参数，就是这个值；如果reduce没有第二个参数，是数组的第一个数据；之后每次回调函数执行时，表示前一个回调函数的返回值。
         // 2如果reduce有第二个参数，是数组的第一个数据，如果reduce没有第二个参数，是数组的第二个数据
         // 3每次遍历到的数据对应的索引
        // 4数组自身
    // 返回值：最后一次回调函数的返回值
    // 是否改变原数组：同forEach
          var arr=[1,2,3,4,5,6,7,2,2,7]

          var res2 = arr.reduce(function(a,b,c,e){
            console.log(a,b,c,e)
            return 'hai'
          })
          console.log(res2)


        //   splice

        
    </script>
</body>